/// @author Alexander Rykovanov 2013
/// @email rykovanov.as@gmail.com
/// @brief Opc binary cnnection channel.
/// @license GNU LGPL
///
/// Distributed under the GNU LGPL License
/// (See accompanying file LICENSE or copy at
/// http://www.gnu.org/licenses/lgpl.html)
///

#ifndef __OPC_UA_BINARY_MESSAGE_IdENTIFIERS
#define __OPC_UA_BINARY_MESSAGE_IdENTIFIERS

namespace OpcUa
{
enum MessageId
{
  INVALID = 0,

  ACTIVATE_SESSION_REQUEST   = 0x1d3, //467;
  ACTIVATE_SESSION_RESPONSE = 0x1d6, //470;

  BROWSE_REQUEST  = 0x20f, // 527;
  BROWSE_RESPONSE = 0x212, //530;

  BROWSE_NEXT_REQUEST  = 0x215, // 533
  BROWSE_NEXT_RESPONSE = 0x218, // 536

  CLOSE_SECURE_CHANNEL_REQUEST = 0x1c4, // 452

  CLOSE_SESSION_REQUEST  = 0x1d9, // 473;
  CLOSE_SESSION_RESPONSE = 0x1dc, // 476;

  // Session services
  CREATE_SESSION_REQUEST  = 0x1cd, // 461;
  CREATE_SESSION_RESPONSE = 0x1d0, // 464;

  // Endpoints services
  FIND_ServerS_REQUEST = 0x1A6, // 422
  FIND_ServerS_RESPONSE = 0x1A9, // 425

  GET_ENDPOINTS_REQUEST  = 0x1ac, // 428
  GET_ENDPOINTS_RESPONSE = 0x1af, // 431

  // Secure channel services
  OPEN_SECURE_CHANNEL_REQUEST  = 0x1be, // 446
  OPEN_SECURE_CHANNEL_RESPONSE = 0x1c1, // 449

  TRANSLATE_BROWSE_PATHS_TO_NODE_IdS_REQUEST  = 0x22A, // 554
  TRANSLATE_BROWSE_PATHS_TO_NODE_IdS_RESPONSE = 0x22D, // 557

  REGISTER_NODES_REQUEST  = 0x230, // 560
  REGISTER_NODES_RESPONSE = 0x233, // 563

  UNREGISTER_NODES_REQUEST  = 0x234, // 564
  UNREGISTER_NODES_RESPONSE = 0x237, // 567

  READ_REQUEST  = 0x277, // 631
  READ_RESPONSE = 0x27A, // 634

  WRITE_REQUEST  = 0x2A1, //673
  WRITE_RESPONSE = 0x2A4, // 676


  CALL_REQUEST  = 712,
  CALL_RESPONSE = 715, // 754

  CREATE_MONITORED_ITEMS_REQUEST  = 0x2EF, // 751
  CREATE_MONITORED_ITEMS_RESPONSE = 0x2F2, // 754

  DELETE_MONITORED_ITEMS_REQUEST  = 0x30d, // 781
  DELETE_MONITORED_ITEMS_RESPONSE = 0x310, // 784

  CREATE_SUBSCRIPTION_REQUEST  = 0x313, //787
  CREATE_SUBSCRIPTION_RESPONSE = 0x316, //790

  DELETE_SUBSCRIPTION_REQUEST  = 0x34f, //847
  DELETE_SUBSCRIPTION_RESPONSE = 0x352, //850

  MODIFY_SUBSCRIPTION_REQUEST  = 0x319, //793
  MODIFY_SUBSCRIPTION_RESPONSE = 0x31c, //796

  PUBLISH_REQUEST = 0x33A,  // 826
  PUBLISH_RESPONSE = 0x33D, // 829

  REPUBLISH_REQUEST = 832,
  REPUBLISH_RESPONSE = 835,

  SET_PUBLISHING_MODE_REQUEST = 0x31F,  // 799
  SET_PUBLISHING_MODE_RESPONSE = 0x322, // 802

  ADD_NODES_REQUEST = 0x1e8, //488;
  ADD_NODES_RESPONSE = 0x1eb, //491;

  DELETE_NODES_REQUEST = 0x1f4, //500;
  DELETE_NODES_RESPONSE = 0x1f7, //503;

  ADD_REFERENCES_REQUEST  = 0x1ee, //494;
  ADD_REFERENCES_RESPONSE = 0x1f1, //497;

  DELETE_REFERENCES_REQUEST  = 0x1fa, //506;
  DELETE_REFERENCES_RESPONSE = 0x1fd, //509;

  SERVICE_FAULT = 0x18d, //397;
};

struct NodeId;

MessageId GetMessageId(const NodeId & id);

}

#endif // __OPC_UA_BINARY_MESSAGE_IdENTIFIERS
